package dao;

import java.util.ArrayList;
import java.util.List;

import model.Usuario;

public class UsuarioDAO extends BaseDAO<Usuario> {
	
    private static UsuarioDAO instancia;
    private static List<Usuario> listaUsuario = null;

    /**
     * Método executado para garantir a existência de apenas uma instância dessa classe (Singleton).
     * 
     * @return uma instância da classe UsuarioBO
     * @author Zeno
     * 
     */
    public static UsuarioDAO getInstance() {
        if (instancia == null) {
            instancia = new UsuarioDAO();
            listaUsuario = new ArrayList<Usuario>();
        }
        return instancia;
    }

    /**
     * Método executado para incluir determinado usuário na lista de usuários.
     * 
     * @param usuario
     * @throws Exception
     * @author Zeno
     * 
     */
    @Override
    public void incluir(Usuario usuario) throws Exception {
        listaUsuario.add(usuario);
    }

    /**
     * Método executado para remover o antigo usuário e adicionar o usuário alterado novamente na lista.
     * 
     * @param antigoUsuario que é o usuário que será removido
     * @param novoUsuario que é o usuário que será adicionado
     * @throws Exception
     * @author Zeno
     * 
     */
    @Override
    public void alterar(Usuario antigoUsuario, Usuario novoUsuario) throws Exception {
        listaUsuario.remove(antigoUsuario);
        listaUsuario.add(novoUsuario);
    }

    /**
     * Método executado para excluir determinado usuário na lista de usuários.
     * 
     * @param usuario
     * @throws Exception
     * @author Zeno
     * 
     */
    @Override
    public void excluir(Usuario usuario) throws Exception {
        listaUsuario.remove(usuario);
    }

    /**
     * Método executado para listar todos os usuários.
     * 
     * @param empregado
     * @return Lista de usuários
     * @throws Exception
     * @author Zeno
     * 
     */
    @Override
    public List<Usuario> listar() throws Exception {

        List<Usuario> listaUsuario = new ArrayList<Usuario>();
        Usuario usuario = null;

        usuario = new Usuario();
        usuario.setId(0l);
        usuario.setNome("admin");
        usuario.setSenha("admin");
        listaUsuario.add(usuario);

        usuario = new Usuario();
        usuario.setId(1l);
        usuario.setNome("gerente");
        usuario.setSenha("gerente");
        listaUsuario.add(usuario);

        usuario = new Usuario();
        usuario.setId(2l);
        usuario.setNome("cliente");
        usuario.setSenha("cliente");
        listaUsuario.add(usuario);

        return listaUsuario;

    }
	
}
